package com.dearbinge.data.api.comment;

import com.baomidou.mybatisplus.plugins.Page;
import com.dearbinge.data.pojo.comment.MessageComment;
import com.dearbinge.data.pojo.comment.Reply;

import java.util.List;


/**
 * @author wes
 * @date 2019/1/8
 */
public interface MessageCommentService {

    /**
     * 根据id和类型查询评论回复
     *
     * @param commentType     类型
     * @param entityId 对应信息表的id
     * @param userId   用户id
     * @return 结果map
     */
    List<Object> getCommentReply(Integer commentType, String entityId, String userId);

    /**
     * 获取评论和回复集
     *
     * @param commentType 类型
     * @param entityId    对应信息表的id
     * @param lastId      最新的id 用来防止分页的时候数据出现重复
     * @param userId      用户id
     * @param current     当前页
     * @param size        每页显示的条数
     * @return 结果map
     */
    Page listCommentReply(Integer commentType, String entityId, String userId, Integer lastId, Integer current, Integer size);

    /**
     * 分页获取回复集
     *
     * @param lastId    最新的id 用来防止分页的时候数据出现重复
     * @param commentId 评论id
     * @param current   当前页
     * @param size      每页显示的条数
     * @return 结果map
     */
    Page listReplyPage(String commentId, Integer lastId, Integer current, Integer size);

    /**
     * 增加评论
     *
     * @param messageComment 评论
     * @return 结果map
     */
    Integer insertMessageComment(MessageComment messageComment);

    /**
     * 修改评论
     *
     * @param messageComment id
     * @return 结果
     */
    Integer updateMessageComment(MessageComment messageComment);

    /**
     * 删除评论
     *
     * @param commentId 评论表ID（不用类型的表的主ID）
     * @param tableId   表ID（不用类型的表的主ID）
     * @param tableType 对应的表类型（1：生活  2：商品  3：秀场）
     * @return 结果提示
     */
    Integer deleteMessageComment(Integer commentId, Integer tableType, Integer tableId);

    /**
     * 增加回复
     *
     * @param reply 回复表
     * @return 返回主键
     */
    Integer insertReply(Reply reply);

    /**
     * 修改回复
     *
     * @param reply 回复
     * @return 结果
     */
    Integer updateReply(Reply reply);

    /**
     * 删除回复
     *
     * @param id 主键id
     * @return 结果提示
     */
    Integer deleteReply(Integer id);


}
